package cn.wolfcode.crm.service;/**
 * Created by 10797 on 2018/7/12.
 */

import cn.wolfcode.crm.domain.Client;
import cn.wolfcode.crm.domain.GuaranteeBill;
import cn.wolfcode.crm.domain.GuaranteeBillVO;
import cn.wolfcode.crm.query.GuaranteeBillQueryObject;
import cn.wolfcode.crm.query.QueryObject;
import cn.wolfcode.crm.util.PageResult;

import java.util.List;

/**
 * @program: crm
 * @description:
 * @author: Mr.chen
 * @create: 2018-07-12 09:45
 **/
public interface IGuaranteeBillService {

    void save(GuaranteeBill guaranteeBill);
    /**
     * @Description: 保存保单信息
     * @Param: [guaranteeBill] 需要保存的保单信息
     * @return: void
     */

    void delete(Long id);
    /**
     * @Description: 删除保单信息
     * @Param: [id] 根据id删除保单信息
     * @return: void
     */

    void update(GuaranteeBill guaranteeBill);
    /**
     * @Description: 更新保单信息
     * @Param: [guaranteeBill] 需要更新的保单信息
     * @return: void
     */

    GuaranteeBill get(Long id);
    /**
     * @Description: 查询当前保单信息
     * @Param: [id] 根据id查询当前保单信息
     * @return: cn.wolfcode.crm.domain.GuaranteeBill
     */

    List<GuaranteeBill> getAll();
    /**
     * @Description: 查询所有的保单信息
     * @Param: []
     * @return: java.util.List<cn.wolfcode.crm.domain.GuaranteeBill>
     */

    PageResult query(QueryObject qo);
    /**
     * @Description: 分页查询当前保单信息
     * @Param: [qo] 传入查询参数
     * @return: cn.wolfcode.crm.util.PageResult
     */

    Client selectClientByBillId(Long id);
    /**
     * @Description: 查询客户信息
     * @Param: [id] 传入订单id查询当前客户
     * @return: cn.wolfcode.crm.util.PageResult
     */

    void editGuaranteeBill(GuaranteeBillVO vo);
    /**
     * @Description: 保存当前修改的暂存单信息
     * @Param: [vo] 传入替代参数类
     * @return: cn.wolfcode.crm.util.JsonResult
     */

    void changeStateUnaudited(Long id);

    /**
     * @Description: 改变当前暂存单的状态
     * @Param: [id] 根据当前保单id改变当前暂存单的状态
     * @return: void
     */

    void changeBillState(String number);
    /**
     * @Description: 拒保方法,将当前状态设置为拒保状态
     * @Param: [number] 根据当前保单编号进行修改
     * @return: void
     */

    void backToChangeBill(String number, String info);
    /**
     * @Description: 退回到退回单当中进行修改
     * @Param: [number, info] 传入当前保单编号和备注信息
     * @return: void
     */

    void auditBill(Long id);
    /**
     * @Description: 审核方法
     * @Param: [id] 根据id查询出需要审核的订单
     * @return: void
     */

    GuaranteeBill queryInfo(Long id);
    /**
     * @Description: 查询修改意见
     * @Param: [id] 根据id查询当前保单的修改意见
     * @return: cn.wolfcode.crm.domain.GuaranteeBill
     */

    PageResult queryHistoryBill(GuaranteeBillQueryObject qo);
    /**
     * @Description: 查询历史单据记录
     * @Param: [qo] 传入查询参数
     * @return: cn.wolfcode.crm.util.PageResult
     */

}
